﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CNFProblem.CNF
{
    interface IAlgorithm
    {
        /// <summary>
        /// Sprawdza czy dla zadanej formuly logicznej istnieje takie podstawienie zmiennych ze formula jest prawdziwa.
        /// Jezeli tak, to dodatkowo metoda zwraca wartosciowanie zmiennych dla ktorych formula jest prawdziwa
        /// </summary>
        /// <param name="formula">Formula logiczna</param>
        /// <param name="values">Wartosci jesli istnieje podstawienie lub null</param>
        /// <returns>True jesli istnieje podstawienie, false w przeciwnym wypadku</returns>
        bool Compute(LogicalFormula3CNF formula, out Dictionary<int, bool> values);
    }
}
